package sort;

import java.util.Arrays;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;

/**
 * @author dx
 * @version 1.0
 * @date 2022/3/26 16:49
 * @description:  给一个整型数组nums，在数组中找出由三个数组成的最大乘积，并输出这个乘积
 *
 * 情况讨论：
 * 先从小到大排序
 * 1、如果全是正数：返回最大的三个数  a[n-1]   a[n-2]  a[n-3]
 * 2、如果全是负数：返回最大三个负数  a[n-1] a[n-2]  a[n-3]
 * 3、如果有正有负：
 *              1、恰好三个数   a[n-1]  a[n-2]   a[n-3]
 *              2、大于三个数   a[n-1](正数) *  a[0](负数)  * a[1]（负数）    或者  a[n-1]*a[n-2]*a[n-3]  （全是正数）
 */
public class Maximum {
    public int maximumProduct(int[] nums) {
        Arrays.sort(nums);
        int n = nums.length;
        return Math.max(nums[n-1]*nums[n-2]*nums[n-3],nums[n-1]*nums[0]*nums[1]);

    }

}
